package com.atguigu1.core.operator

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 *
 * @description: 分区内取最大值,分区间取最大值求和
 * @time: 2021-03-12 11:45
 * @author: baojinlong
 **/
object Spark11GlomDemo {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("rdd")
    // 设置rdd分区数字
    val sparkContext = new SparkContext(conf)
    val rddValue: RDD[Int] = sparkContext.makeRDD(List(1, 2, 3, 4), 2)

    /**
     * groupBy会将数据源中的每一个数据进行分区判断,根据返回的分组key进行分组
     * 相同的key值的数据会放置在一个组中
     */
    rddValue.groupBy(item => item % 2).collect().foreach(println)
    // 分组和分区没有必然的关系
    val rddValue2: RDD[String] = sparkContext.makeRDD(List("hello", "spark", "scala", "hadoop", "hi", "windy"), 2)
    rddValue2.groupBy(_.charAt(0)).collect().foreach(println)
    sparkContext.stop()
  }
}
